﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASBCC.Database.Service;
using System.Data;

namespace BEGDC.CC.Web.EZVisit.SystemTools
{
    public partial class MailTemplateList : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!IsPostBack)
            {
                search(1);
            }
        }

        void search(int pageIndex)
        {
            
            DataTable dt = MailTemplateManager.SelectAll().Tables[0];

            if (this._Sorting != string.Empty)
            {
                dt.DefaultView.Sort = this._Sorting;
            }

            dgList.DataSource = dt;
            dgList.DataBind();

            int count = dt.DefaultView.Count;
            SetPageCount(count, pageIndex);
        }



        protected void btnSearch_Click(object sender, EventArgs e)
        {
            dgList.CurrentPageIndex = 0;
            search(1);
        }


        private string _Sorting
        {
            get
            {
                if (ViewState["Sorting"] == null) return string.Empty;

                return ViewState["Sorting"].ToString();
            }
            set { ViewState["Sorting"] = value; }
        }

        public void dgList_SortCommand(object source, DataGridSortCommandEventArgs e)
        {
            if (this._Sorting.IndexOf(e.SortExpression) > -1 && this._Sorting == e.SortExpression)
                this._Sorting = e.SortExpression + " desc";
            else
                this._Sorting = e.SortExpression;
            search(1);
        }

        #region ---------- paging events ----------------
        public void btnPageFirst_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            dgList.CurrentPageIndex = 0;
            this.search(1);
        }

        public void btnPagePrev_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            if (_CurrentPageIndex == 1) return;
            this.dgList.CurrentPageIndex = _CurrentPageIndex - 2;
            this.search(_CurrentPageIndex - 1);
        }

        public void btnPageNext_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            if (_CurrentPageIndex == _PageCount) return;
            this.dgList.CurrentPageIndex = _CurrentPageIndex;
            this.search(_CurrentPageIndex + 1);
        }

        public void btnPageLast_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            this.dgList.CurrentPageIndex = _PageCount - 1;
            this.search(_PageCount);
        }

        public void btnGotoPage_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            if (this.txtPage.Text == string.Empty)
            {
                this.txtPage.Text = "1";
            }
            int gotopage = 1;
            try
            {
                gotopage = Convert.ToInt32(this.txtPage.Text);
            }
            catch { }
            int currentpage = 0;

            if (gotopage >= _PageCount)
            {
                gotopage = _PageCount;
                currentpage = gotopage - 1;
                if (currentpage < 0) currentpage = 0;
            }
            else if (gotopage <= 0)
            {
                gotopage = 1;
            }
            else
            {
                currentpage = gotopage - 1;
            }

            this.dgList.CurrentPageIndex = currentpage;

            this.search(gotopage);

            this.txtPage.Text = string.Empty;
        }

        #endregion

        #region page navigation
        private int _PageCount
        {
            get
            {
                if (ViewState["PageCount"] != null) return (int)ViewState["PageCount"];
                else
                    return 0;
            }
            set
            {
                ViewState["PageCount"] = value;
            }
        }
        private int _CurrentPageIndex
        {
            get
            {
                if (ViewState["CurrentPageIndex"] != null) return (int)ViewState["CurrentPageIndex"];
                else
                    return 0;
            }
            set
            {
                ViewState["CurrentPageIndex"] = value;
            }
        }
        private int _RowCount
        {
            get
            {
                if (ViewState["RowCount"] != null) return (int)ViewState["RowCount"];
                else
                    return 0;
            }
            set
            {
                ViewState["RowCount"] = value;
            }
        }
        private void SetPageNavi(int newPage)
        {
            if (newPage <= 1)
            {
                this.btnPageFirst.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_first_inact.gif";
                this.btnPagePrev.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_pre_inact.gif";
                this.btnPageFirst.Attributes["disabled"] = "true";
                this.btnPagePrev.Attributes["disabled"] = "true";
            }
            else
            {
                this.btnPageFirst.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_first.gif";
                this.btnPagePrev.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_pre.gif";
                this.btnPageFirst.Attributes.Remove("disabled");
                this.btnPagePrev.Attributes.Remove("disabled");
            }

            if (newPage >= _PageCount)
            {
                this.btnPageNext.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_next_inact.gif";
                this.btnPageLast.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_last_inact.gif";
                this.btnPageNext.Attributes["disabled"] = "true";
                this.btnPageLast.Attributes["disabled"] = "true";
            }
            else
            {
                this.btnPageNext.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_next.gif";
                this.btnPageLast.ImageUrl = BEGDC.CC.Web.UserControls.WebUtility.Path + "/images/pg_last.gif";
                this.btnPageNext.Attributes.Remove("disabled");
                this.btnPageLast.Attributes.Remove("disabled");
            }

            this.lblCurrentPageIndex.Text = newPage.ToString();
            this.lblPageCount.Text = _PageCount.ToString();
            this.lblRecordCount.Text = _RowCount.ToString();

        }

        private void SetPageCount(int count, int pageIndex)
        {
            if (count > 0)
            {
                _RowCount = count;
                _PageCount = count / this.dgList.PageSize;
                if (count % this.dgList.PageSize > 0) _PageCount++;

                _CurrentPageIndex = pageIndex;
                SetPageNavi(pageIndex);
            }
            else
            {
                _RowCount = count;
                _PageCount = count;
                _CurrentPageIndex = 0;
                SetPageNavi(0);
            }
        }

        #endregion
    }
}
